import pandas as pd
import os


def write_to_excel(file_name, parsed_answer):
    # 获取当前的 id
    current_id = parsed_answer.get("id")
    print(f"parsed_answer:{parsed_answer} ")

    # 指定读取文件的目录
    input_directory = "ai_correction_xls"
    input_file_path = os.path.join(input_directory, file_name)
    # 尝试读取现有的 Excel 文件
    try:
        df = pd.read_excel(input_file_path)
    except FileNotFoundError:
        columns = ['id', 'reason', 'f分数0', 'f分数1',
                   'f分数2', 'f分数3', 'f分数4', 'duration_time', '题目类型', '题目内容', '题目总分', '学生作答']
        # 如果文件不存在，创建一个新的 DataFrame
        df = pd.DataFrame(columns=columns)

    # 检查是否存在 id 列
    if "id" in df.columns:
        # 检查是否存在 id 列的值等于 current_id 的行
        if (df["id"] == current_id).any():
            print("测试进入没")
            # 如果存在，找到对应的行
            row_index = df[df["id"] == current_id].index[0]
            # 更新该行的额外字段
            for key, value in parsed_answer.items():
                if key != "id" and key in df.columns:  # 不更新 id 字段且字段不存在
                    df.at[row_index, key] = value  # 更新该行的字段
            print(f"当前行数据: {df.iloc[row_index].to_dict()}")  # 将行数据转换为字典格式并打印
        else:
            # 如果 ID 是新的，添加一行
            new_row = pd.DataFrame([parsed_answer])
            df = pd.concat([df, new_row], ignore_index=True)
    else:
        # 如果没有 id 列，直接将 parsed_answer 添加到 DataFrame
        new_row = pd.DataFrame([parsed_answer])
        df = pd.concat([df, new_row], ignore_index=True)

    # 确保 ai_correction_xls 目录存在
    output_directory = "ai_correction_xls"
    os.makedirs(output_directory, exist_ok=True)  # 创建目录（如果不存在）

    # 更新文件路径，将文件写入 ai_correction_xls 目录
    output_file_path = os.path.join(output_directory, file_name)
    # 将 DataFrame 写入 Excel 文件
    df.to_excel(output_file_path, index=False)
